package com.carsa.blackberry.util;

import java.util.Enumeration;
import java.util.Vector;

/**
 * @author Nahuel Barrios.
 * @since 23/08/2010.
 * @version 1.0
 */
public class Util {

    /**
     * Elimina los ceros a la izquierda del {@link String} <code>source</code>.
     * 
     * @param source
     * @return Un nuevo {@link String} sin los ceros a la izquierda. En caso de que <code>source</code> sea
     *         <code>null</code>, entonces retorna una cadena vacia "". Si luego de eliminar todos los ceros, la
     *         longitud de la nueva cadena es cero, entonces retorna "0".
     */
    public static String trimLeft(String source) {
	String ret = source;

	if (ret == null)
	    return "";

	while (ret.charAt(0) == '0')
	    ret = ret.substring(1);

	if (ret.length() == 0)
	    ret = "0";

	return ret;
    }

    public static Object getFromVector(Vector elementsVector, Comparable filter) {// TODO : Test: getFromVector()
	Enumeration elements = elementsVector.elements();
	while (elements.hasMoreElements()) {
	    Comparable aComparableObject = (Comparable) elements.nextElement();
	    if (!getBooleanConditionFrom(aComparableObject.compareTo(filter)))
		return aComparableObject;
	}

	return null;
    }

    // public static String makeString(String name, String legajo){
    // String nameAndLegajo = (String) _combo_userName.getChoice(_combo_userName.getSelectedIndex());
    // int breakpoint = nameAndLegajo.indexOf("(") + 1;
    // nameAndLegajo = nameAndLegajo.substring(breakpoint);
    // nameAndLegajo = nameAndLegajo.substring(0, nameAndLegajo.indexOf(")"));
    // }

    /**
     * @param from
     * @param to
     */
    public static void addAllElements(Vector from, Vector to) {
	if (to == null)
	    to = new Vector();

	Enumeration fromElements = from.elements();
	while (fromElements.hasMoreElements()) {
	    Object anObject = (Object) fromElements.nextElement();
	    to.addElement(anObject);
	}
    }

    /**
     * Devuelve true/false dependiendo del valor del parametro value.
     * 
     * @param value
     *            el int que queremos evaluar para obtener una variable booleana.
     * @return true cuando value!=0 o false cuando value==0
     */
    public static boolean getBooleanConditionFrom(int value) {
	return value != 0;
    }

    /**
     * Devuelve true/false dependiendo del valor del parametro value.
     * 
     * @param value
     * @return <code>true</code> cuando el valor de value es "true" (NO es case sensitive). O <code>false</code> cuando
     *         value es <code>null</code> o vale cualquier otra cosa. Nota: NO es necesario que valga "false", es decir,
     *         la cadena "hola" tambien devuelve <code>false</code>.
     */
    public static boolean getBooleanConditionFrom(String value) {
	return value != null && value.equalsIgnoreCase(Boolean.TRUE.toString());
    }
    
    /**
     * Devuelve true/false dependiendo del valor del parametro value.
     * 
     * @param value
     *            el int que queremos evaluar para obtener una variable booleana.
     * @return true cuando value==4 o false en cualquier otro caso.
     */
    public static boolean getBooleanConditionFromDialogResponse(int value) {
	return value == 4;
    }  

    /**
     * @param elements
     * @return
     */
    public static Vector getVectorFrom(Object[] elements) {
	Vector returnValue = new Vector();

	if (elements == null)
	    return returnValue;

	for (int idx = 0; idx < elements.length; idx++)
	    returnValue.addElement(elements[idx]);

	return returnValue;
    }

}
